using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._BusinessAnalystTools._TargetMarketing
{
    /// <summary>
    /// <para>Generate Survey Report For Profile</para>
    /// <para>Displays characteristics from the consumer survey data for your target profile to determine customer lifestyle habits and preferences.</para>
    /// <para>显示目标配置文件的消费者调查数据中的特征，以确定客户的生活习惯和偏好。</para>
    /// </summary>    
    [DisplayName("Generate Survey Report For Profile")]
    public class GenerateSurveyReportForProfile : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public GenerateSurveyReportForProfile()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_target_profile">
        /// <para>Target Profile</para>
        /// <para>A segmentation profile representing the segments to be analyzed. The target profile usually represents your customer segmentation profile.</para>
        /// <para>表示要分析的区段的分段配置文件。目标配置文件通常代表您的客户细分配置文件。</para>
        /// </param>
        /// <param name="_base_profile">
        /// <para>Base Profile</para>
        /// <para>A segmentation profile representing the base profile segments. This is the segmentation used for comparison. The base profile usually represents your market area segmentation profile.</para>
        /// <para>表示基本配置文件段的分段配置文件。这是用于比较的细分。基本概况通常代表您的市场区域细分概况。</para>
        /// </param>
        /// <param name="_survey_category">
        /// <para>Survey Category</para>
        /// <para>A category that contains characteristics from the consumer survey.</para>
        /// <para>包含消费者调查特征的类别。</para>
        /// </param>
        /// <param name="_report_folder">
        /// <para>Output Report Folder</para>
        /// <para>The output location where the report will be saved.</para>
        /// <para>将保存报表的输出位置。</para>
        /// </param>
        public GenerateSurveyReportForProfile(object _target_profile, object _base_profile, object _survey_category, object _report_folder)
        {
            this._target_profile = _target_profile;
            this._base_profile = _base_profile;
            this._survey_category = _survey_category;
            this._report_folder = _report_folder;
        }
        public override string ToolboxName => "Business Analyst Tools";

        public override string ToolName => "Generate Survey Report For Profile";

        public override string CallName => "ba.GenerateSurveyReportForProfile";

        public override List<string> AcceptEnvironments => ["baDataSource", "workspace"];

        public override object[] ParameterInfo => [_target_profile, _base_profile, _survey_category, _report_folder, _sort_column.GetGPValue(), _sort_order.GetGPValue(), _report_title, _report_format, _output_report];

        /// <summary>
        /// <para>Target Profile</para>
        /// <para>A segmentation profile representing the segments to be analyzed. The target profile usually represents your customer segmentation profile.</para>
        /// <para>表示要分析的区段的分段配置文件。目标配置文件通常代表您的客户细分配置文件。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Profile")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target_profile { get; set; }


        /// <summary>
        /// <para>Base Profile</para>
        /// <para>A segmentation profile representing the base profile segments. This is the segmentation used for comparison. The base profile usually represents your market area segmentation profile.</para>
        /// <para>表示基本配置文件段的分段配置文件。这是用于比较的细分。基本概况通常代表您的市场区域细分概况。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Base Profile")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _base_profile { get; set; }


        /// <summary>
        /// <para>Survey Category</para>
        /// <para>A category that contains characteristics from the consumer survey.</para>
        /// <para>包含消费者调查特征的类别。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Survey Category")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _survey_category { get; set; }


        /// <summary>
        /// <para>Output Report Folder</para>
        /// <para>The output location where the report will be saved.</para>
        /// <para>将保存报表的输出位置。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Report Folder")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _report_folder { get; set; }


        /// <summary>
        /// <para>Sort Column</para>
        /// <para><xdoc>
        ///   <para>Specifies the column to use to sort the report.</para>
        ///   <bulletList>
        ///     <bullet_item>Expected Number—Sort is based on counts—for example, number of adults. This is the default.</bullet_item><para/>
        ///     <bullet_item>Index—Sort is based on rank.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定用于对报表进行排序的列。</para>
        ///   <bulletList>
        ///     <bullet_item>预期数量 - 排序基于计数，例如成人人数。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>索引 （Index） - 排序基于排名。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Sort Column")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _sort_column_value _sort_column { get; set; } = _sort_column_value._EXPECTED_NUMBER;

        public enum _sort_column_value
        {
            /// <summary>
            /// <para>Expected Number</para>
            /// <para>Expected Number—Sort is based on counts—for example, number of adults. This is the default.</para>
            /// <para>预期数量 - 排序基于计数，例如成人人数。这是默认设置。</para>
            /// </summary>
            [Description("Expected Number")]
            [GPEnumValue("EXPECTED_NUMBER")]
            _EXPECTED_NUMBER,

            /// <summary>
            /// <para>Index</para>
            /// <para>Index—Sort is based on rank.</para>
            /// <para>索引 （Index） - 排序基于排名。</para>
            /// </summary>
            [Description("Index")]
            [GPEnumValue("INDEX")]
            _INDEX,

        }

        /// <summary>
        /// <para>Sort Order</para>
        /// <para><xdoc>
        ///   <para>Specifies the order of the report, based on the sort column, in ascending or descending order.</para>
        ///   <bulletList>
        ///     <bullet_item>Ascending—Sort in ascending order.</bullet_item><para/>
        ///     <bullet_item>Descending—Sort in descending order. This is the default.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>根据排序列按升序或降序指定报表的顺序。</para>
        ///   <bulletList>
        ///     <bullet_item>升序 - 按升序排序。</bullet_item><para/>
        ///     <bullet_item>降序 - 按降序排序。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Sort Order")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _sort_order_value _sort_order { get; set; } = _sort_order_value._DESCENDING;

        public enum _sort_order_value
        {
            /// <summary>
            /// <para>Ascending</para>
            /// <para>Ascending—Sort in ascending order.</para>
            /// <para>升序 - 按升序排序。</para>
            /// </summary>
            [Description("Ascending")]
            [GPEnumValue("ASCENDING")]
            _ASCENDING,

            /// <summary>
            /// <para>Descending</para>
            /// <para>Descending—Sort in descending order. This is the default.</para>
            /// <para>降序 - 按降序排序。这是默认设置。</para>
            /// </summary>
            [Description("Descending")]
            [GPEnumValue("DESCENDING")]
            _DESCENDING,

        }

        /// <summary>
        /// <para>Report Title</para>
        /// <para>The title of the report.</para>
        /// <para>报表的标题。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Report Title")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _report_title { get; set; } = null;


        /// <summary>
        /// <para>Report Formats</para>
        /// <para>The report output format. The default value is PDF. Additional available formats are XLSX, HTML, CSV, and PAGX.</para>
        /// <para>报表输出格式。默认值为 PDF。其他可用格式包括 XLSX、HTML、CSV 和 PAGX。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Report Formats")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _report_format { get; set; } = null;


        /// <summary>
        /// <para>Output Report</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Report")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public List<object> _output_report { get; set; }


        public GenerateSurveyReportForProfile SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}